package com.cszjzx.member.service;

import java.util.List;

import com.cszjzx.member.po.Member;
import com.cszjzx.member.po.Page;
import com.cszjzx.member.po.TempleMember;

public interface TempleMemberService {
	/**
	 * 增加操作记录
	 * @param fieldsName 字段名
	 * @param fieldsValue 字段值
	 * @param idcard 
	 * @param checkcondition 操作状态
	 * @param masterid
	 * @param operationType 
	 * @param process 根据process判断到底是插入还是更新，老团员和第一阶段是插入，第二阶段和第三阶段是更新
	 * @param isSupper 是否为超级管理员
	 * @param id 用来接受重新提交时作为区别
	 */
	public boolean addTempleMember(String[] fieldsName,String[] fieldsValue,String idcard,int checkcondition,int masterid,
			int process, int operationType, boolean isSupper, int id);

	/**
	 * 添加删除操作
	 * @param isSupper 超级管理员为true，管理员为false 
	 * @param idcard
	 * @param masterid
	 * @param checkCondition 审核状态（管理员为1，超级管理员为2）
	 */
	public void addDeletedTempleMember(boolean isSupper, String idcard,int masterid, int checkCondition);
	
	/**
	 * 批量导入数据时
	 * @param membersList
	 * @param process
	 */
	public void addTempleMembers(List<Member> membersList,String process,int masterid);
	
	/**
	 * 超级管理员查询所有操作记录
	 * @param checkcondition
	 * @return
	 */
	public Page getPage(int checkcondition,int beginPage);
	
	/**
	 * 管理员查询所有操作记录
	 * @param id 管理员id号
	 * @param checkcondition
	 * @param beginPage
	 * @return
	 */
	public Page getPage(int id,int checkcondition,int beginPage);
	
	
	public boolean updateTempleMember(String idcard,int checkcondition);
	
	
	public TempleMember getByIdcard(String idcard);
	
	/**
	 * 管理员登录时查看审核信息条数
	 * @param masterid
	 * @param checkcondition
	 * @return
	 */
	public int getByMasteridAndCheckcondition(int masterid, int checkcondition);
	
	/**
	 * 超级管理员查看审核信息条数
	 * @param checkcondition
	 * @return
	 */
	public int getByCheckcondition(int checkcondition);

	/**
	 * 超级管理员根据序号来决定审核
	 * @param id
	 * @param checkcondition
	 * @param failReason 
	 * @return
	 */
	public boolean updateTempleMember(int id, int checkcondition, String failReason);

	/**
	 * 管理员或者超级管理员根据id来查看审核信息
	 * @param id
	 * @return
	 */
	public TempleMember getById(int id);
	
	/**
	 * 增加修改团员操作
	 * @param fieldsName
	 * @param fieldsValue
	 * @param idcard
	 * @param checkcondition
	 * @param id
	 * @param process
	 * @param operationType
	 * @param id 用来接收来自重新提交传来的id值
	 * @return
	 */
	public boolean addUpdateTempleMember(String[] fieldsName, String[] fieldsValue, String idcard, int checkcondition,
			int masterid, int process, int operationType, boolean isSupper, int id);
	/**
	 * 查找未读过的审核信息（已通过和未通过）
	 * @param masterid
	 * @param checkCondition
	 * @return
	 */
	public int getIsReadByMasteridAndCheckcondition(int masterid, int checkCondition);
	
	/**
	 * 在信息添加时，根据身份证信息，检测这个团员是否处在信息审核状态，并且此次添加是否合理（不可以跨级或者其他误操作）
	 * @param idcard
	 * @param process
	 * @return
	 */
	public String checkBeforeImport(String idcard, int process);
	
	/**
	 * 设置该管理员已通过的审核信息为已读
	 * @param masterid
	 */
	public void setIsReadNull(int masterid);
}
